﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tauren.Business.Entity.Config;
using Tauren.Business.Entity.Global;
using Tauren.Business.Entity.Input;

namespace Tauren.Business.Service.Employee
{
    public interface IEmployeeService
    { 

        /// <summary>
        /// 删除人员基本信息信息
        /// </summary>
        /// </summary>
        /// <param name="model">人员基本信息实体</param>
        /// <returns></returns>
        IResponseMessage Delete(object id); 

        /// <summary>
        /// 获取人员基本信息信息--多个
        /// </summary>
        /// </summary>
        /// <param name="model">人员基本信息实体</param>
        /// <returns></returns>
        IResponseMessage GetByCode(string code);
          

        /// <summary>
        /// 获取人员基本信息信息--根据empids集合
        /// </summary>
        /// </summary>
        /// <param name="model">人员基本信息实体</param>
        /// <returns></returns>
        IResponseMessage GetListByEmpIds(List<string> empids);
        /// <summary>
        /// 获取人员基本信息信息--获取所有集合
        /// </summary>
        /// </summary>
        /// <param name="model">人员基本信息实体</param>
        /// <returns></returns>
        IResponseMessage GetAll();

        /// <summary>
        /// 获取单个数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        IResponseMessage FirstOrDefault(object id);
        /// <summary>
        /// 获取所有数据
        /// </summary> 
        /// <returns></returns>
        IResponseMessage All();

        /// <summary>
        /// 新增数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        IResponseMessage Add(Entity.Input.Employee_input input);
        /// <summary>
        /// 编辑数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        IResponseMessage Editor(Entity.Input.Employee_input input);

        /// <summary>
        /// 分页获取数据
        /// </summary>
        /// <param name="queryModel"></param>
        /// <returns></returns>
        IResponseMessage Pages(Entity.Global.QueryModel queryModel);
        /// <summary>
        /// 物理删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        IResponseMessage PhysicalDelete(int id);

        /// <summary>
        /// 启用/禁用
        /// </summary>
        /// <param name="id"></param>
        /// <param name="enable"></param>
        /// <returns></returns>
        IResponseMessage Enable(int id);

        /// <summary>
        /// 根据组织获取员工基本信息
        /// </summary>
        /// <param name="OrgId"></param>
        /// <returns></returns>
        IResponseMessage GetByOrgs(string OrgId);

        /// <summary>
        /// 根据接口获取当前用户
        /// </summary>
        /// <returns></returns>
        IResponseMessage GetCurrentUser();
        /// <summary>
        /// 树形结构
        /// </summary>
        /// <returns></returns>
        IResponseMessage Tree();

        /// <summary>
        /// 获取表单字段的方法
        /// </summary>
        /// <param name="AutoID"></param>
        /// <returns></returns>
        IResponseMessage Config(string PageType);

        /// <summary>
        /// 弹出人员列表
        /// </summary>
        /// <param name="queryModel"></param>
        /// <returns></returns>
        IResponseMessage DialogEmps(QueryModel queryModel);

        /// <summary>
        /// 流程任务审批人列表
        /// </summary>
        /// <param name="queryModel"></param>
        /// <returns></returns>
        IResponseMessage FlowEmps(QueryModel queryModel);
    }
}
